/**
 * @param {number[][]} points
 * @return {number}
 */
var largestTriangleArea = function (points) {
  let maxArea = 0;
  const n = points.length;

  // 三重循环遍历所有可能的三点组合
  for (let i = 0; i < n; i++) {
    for (let j = i + 1; j < n; j++) {
      for (let k = j + 1; k < n; k++) {
        // 计算三角形面积
        const area = calculateArea(points[i], points[j], points[k]);
        // 更新最大面积
        if (area > maxArea) {
          maxArea = area;
        }
      }
    }
  }

  return maxArea;
};

/**
 * 计算三个点组成的三角形面积
 * @param {number[]} p1 第一个点 [x1, y1]
 * @param {number[]} p2 第二个点 [x2, y2]
 * @param {number[]} p3 第三个点 [x3, y3]
 * @return {number} 三角形面积
 */
function calculateArea(p1, p2, p3) {
  // 使用行列式公式计算面积
  const area =
    0.5 *
    Math.abs(
      (p2[0] - p1[0]) * (p3[1] - p1[1]) - (p2[1] - p1[1]) * (p3[0] - p1[0])
    );
  return area;
}

// 示例测试
console.log(
  largestTriangleArea([
    [0, 0],
    [0, 1],
    [1, 0],
    [0, 2],
    [2, 0],
  ])
); // 输出: 2.00000
console.log(
  largestTriangleArea([
    [1, 0],
    [0, 0],
    [0, 1],
  ])
); // 输出: 0.50000
